home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / CMApplication.p < prev    next >
Text File  |  1996-05-01  |  27KB  |  858 lines

  1. {
  2.      File:        CMApplication.p
  3.  
  4.      Contains:    Color Matching Interfaces
  5.  
  6.      Version:    Technology:    ColorSync 2.0
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT CMApplication;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __CMAPPLICATION__}
  28. {$SETC __CMAPPLICATION__ := 1}
  29.  
  30. {$I+}
  31. {$SETC CMApplicationIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __QUICKDRAW__}
  38. {$I Quickdraw.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __FILES__}
  41. {$I Files.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __PRINTING__}
  44. {$I Printing.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __CMICCPROFILE__}
  47. {$I CMICCProfile.p}
  48. {$ENDC}
  49.  
  50. {$PUSH}
  51. {$ALIGN MAC68K}
  52. {$LibExport+}
  53.  
  54. {$IFC FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  55.  
  56. CONST
  57.     kDefaultCMMSignature        = 'appl';
  58.  
  59. {  Macintosh 68K trap word  }
  60.     cmTrap                        = $ABEE;
  61.  
  62. {  PicComment IDs  }
  63.     cmBeginProfile                = 220;
  64.     cmEndProfile                = 221;
  65.     cmEnableMatching            = 222;
  66.     cmDisableMatching            = 223;
  67.     cmComment                    = 224;
  68.  
  69. {  PicComment selectors for cmComment  }
  70.     cmBeginProfileSel            = 0;
  71.     cmContinueProfileSel        = 1;
  72.     cmEndProfileSel                = 2;
  73.  
  74. {  Defines for version 1.0 CMProfileSearchRecord.fieldMask  }
  75.     cmMatchCMMType                = $00000001;
  76.     cmMatchApplProfileVersion    = $00000002;
  77.     cmMatchDataType                = $00000004;
  78.     cmMatchDeviceType            = $00000008;
  79.     cmMatchDeviceManufacturer    = $00000010;
  80.     cmMatchDeviceModel            = $00000020;
  81.     cmMatchDeviceAttributes        = $00000040;
  82.     cmMatchFlags                = $00000080;
  83.     cmMatchOptions                = $00000100;
  84.     cmMatchWhite                = $00000200;
  85.     cmMatchBlack                = $00000400;
  86.  
  87. {  Defines for version 2.0 CMSearchRecord.searchMask  }
  88.     cmMatchAnyProfile            = $00000000;
  89.     cmMatchProfileCMMType        = $00000001;
  90.     cmMatchProfileClass            = $00000002;
  91.     cmMatchDataColorSpace        = $00000004;
  92.     cmMatchProfileConnectionSpace = $00000008;
  93.     cmMatchManufacturer            = $00000010;
  94.     cmMatchModel                = $00000020;
  95.     cmMatchAttributes            = $00000040;
  96.     cmMatchProfileFlags            = $00000080;
  97.  
  98. {  Result codes  }
  99.                                                                 {  General Errors  }
  100.     cmProfileError                = -170;
  101.     cmMethodError                = -171;
  102.     cmMethodNotFound            = -175;                            {  CMM not present  }
  103.     cmProfileNotFound            = -176;                            {  Responder error  }
  104.     cmProfilesIdentical            = -177;                            {  Profiles the same  }
  105.     cmCantConcatenateError        = -178;                            {  Profile can't be concatenated  }
  106.     cmCantXYZ                    = -179;                            {  CMM cant handle XYZ space  }
  107.     cmCantDeleteProfile            = -180;                            {  Responder error  }
  108.     cmUnsupportedDataType        = -181;                            {  Responder error  }
  109.     cmNoCurrentProfile            = -182;                            {  Responder error  }
  110.                                                                 {  Profile Access Errors  }
  111.     cmElementTagNotFound        = -4200;
  112.     cmIndexRangeErr                = -4201;                        {  Index out of range  }
  113.     cmCantDeleteElement            = -4202;
  114.     cmFatalProfileErr            = -4203;
  115.     cmInvalidProfile            = -4204;                        {  A Profile must contain a 'cs1 ' tag to be valid  }
  116.     cmInvalidProfileLocation    = -4205;                        {  Operation not supported for this profile location  }
  117.                                                                 {  Profile Search Errors  }
  118.     cmInvalidSearch                = -4206;                        {  Bad Search Handle  }
  119.     cmSearchError                = -4207;
  120.     cmErrIncompatibleProfile    = -4208;                        {  Other ColorSync Errors  }
  121.     cmInvalidColorSpace            = -4209;                        {  Profile colorspace does not match bitmap type  }
  122.     cmInvalidSrcMap                = -4210;                        {  Source pix/bit map was invalid  }
  123.     cmInvalidDstMap                = -4211;                        {  Destination pix/bit map was invalid  }
  124.     cmNoGDevicesError            = -4212;                        {  Begin/End Matching -- no gdevices available  }
  125.     cmInvalidProfileComment        = -4213;                        {  Bad Profile comment during drawpicture  }
  126.                                                                 {  Color Conversion Errors  }
  127.     cmRangeOverFlow                = -4214;                        {  Warning that some output color values over/underflowed and were clipped  }
  128.                                                                 {  Other Profile Access Errors  }
  129.     cmCantCopyModifiedV1Profile    = -4215;                        {  Illegal to copy version 1 profiles that have been modified  }
  130.                                                                 {  NamedColor Errors  }
  131.     cmNamedColorNotFound        = -4216;                        {  namedColor not found  }
  132.  
  133. {  deviceType values for ColorSync 1.0 Device Profile access  }
  134.     cmSystemDevice                = 'sys ';
  135.     cmGDevice                    = 'gdev';
  136.  
  137. {  Commands for CMFlattenUPP(...)  }
  138.     cmOpenReadSpool                = 1;
  139.     cmOpenWriteSpool            = 2;
  140.     cmReadSpool                    = 3;
  141.     cmWriteSpool                = 4;
  142.     cmCloseSpool                = 5;
  143.  
  144. {  Flags for PostScript-related functions  }
  145.     cmPS7bit                    = 1;
  146.     cmPS8bit                    = 2;
  147.  
  148. {  Abstract data type for memory-based Profile  }
  149.  
  150. TYPE
  151.     CMProfileRef                        = Ptr;
  152. {  Abstract data type for Profile search result  }
  153.     CMProfileSearchRef                    = Ptr;
  154. {  Abstract data type for BeginMatching(...) reference  }
  155.     CMMatchRef                            = Ptr;
  156. {  Abstract data type for ColorWorld reference  }
  157.     CMWorldRef                            = Ptr;
  158. {  Caller-supplied flatten function  }
  159.     CMFlattenProcPtr = ProcPtr;  { FUNCTION CMFlatten(command: LONGINT; VAR size: LONGINT; data: UNIV Ptr; refCon: UNIV Ptr): OSErr; }
  160.  
  161. {  Caller-supplied progress function for Bitmap & PixMap matching routines  }
  162.     CMBitmapCallBackProcPtr = ProcPtr;  { FUNCTION CMBitmapCallBack(progress: LONGINT; refCon: UNIV Ptr): BOOLEAN; }
  163.  
  164. {  Caller-supplied filter function for Profile search  }
  165.     CMProfileFilterProcPtr = ProcPtr;  { FUNCTION CMProfileFilter(prof: CMProfileRef; refCon: UNIV Ptr): BOOLEAN; }
  166.  
  167.     CMFlattenUPP = UniversalProcPtr;
  168.     CMBitmapCallBackUPP = UniversalProcPtr;
  169.     CMProfileFilterUPP = UniversalProcPtr;
  170.  
  171. CONST
  172.     uppCMFlattenProcInfo = $00003FE0;
  173.     uppCMBitmapCallBackProcInfo = $000003D0;
  174.     uppCMProfileFilterProcInfo = $000003D0;
  175.  
  176. FUNCTION NewCMFlattenProc(userRoutine: CMFlattenProcPtr): CMFlattenUPP;
  177.     {$IFC NOT GENERATINGCFM }
  178.     INLINE $2E9F;
  179.     {$ENDC}
  180.  
  181. FUNCTION NewCMBitmapCallBackProc(userRoutine: CMBitmapCallBackProcPtr): CMBitmapCallBackUPP;
  182.     {$IFC NOT GENERATINGCFM }
  183.     INLINE $2E9F;
  184.     {$ENDC}
  185.  
  186. FUNCTION NewCMProfileFilterProc(userRoutine: CMProfileFilterProcPtr): CMProfileFilterUPP;
  187.     {$IFC NOT GENERATINGCFM }
  188.     INLINE $2E9F;
  189.     {$ENDC}
  190.  
  191. FUNCTION CallCMFlattenProc(command: LONGINT; VAR size: LONGINT; data: UNIV Ptr; refCon: UNIV Ptr; userRoutine: CMFlattenUPP): OSErr;
  192.     {$IFC NOT GENERATINGCFM}
  193.     INLINE $205F, $4E90;
  194.     {$ENDC}
  195.  
  196. FUNCTION CallCMBitmapCallBackProc(progress: LONGINT; refCon: UNIV Ptr; userRoutine: CMBitmapCallBackUPP): BOOLEAN;
  197.     {$IFC NOT GENERATINGCFM}
  198.     INLINE $205F, $4E90;
  199.     {$ENDC}
  200.  
  201. FUNCTION CallCMProfileFilterProc(prof: CMProfileRef; refCon: UNIV Ptr; userRoutine: CMProfileFilterUPP): BOOLEAN;
  202.     {$IFC NOT GENERATINGCFM}
  203.     INLINE $205F, $4E90;
  204.     {$ENDC}
  205.  
  206. TYPE
  207.     CMError                                = LONGINT;
  208. {  For 1.0 and 2.0 profile header variants  }
  209. {  CMAppleProfileHeader  }
  210.     CMAppleProfileHeaderPtr = ^CMAppleProfileHeader;
  211.     CMAppleProfileHeader = RECORD
  212.         CASE INTEGER OF
  213.         0: (
  214.             cm1:                CMHeader;
  215.             );
  216.         1: (
  217.             cm2:                CM2Header;
  218.             );
  219.     END;
  220.  
  221. {  Param for CWConcatColorWorld(...)  }
  222.     CMConcatProfileSetPtr = ^CMConcatProfileSet;
  223.     CMConcatProfileSet = RECORD
  224.         keyIndex:                INTEGER;                                {  Zero-based  }
  225.         count:                    INTEGER;                                {  Min 1  }
  226.         profileSet:                ARRAY [0..0] OF CMProfileRef;            {  Variable. Ordered from Source -> Dest  }
  227.     END;
  228.  
  229. {  ColorSync color data types  }
  230.     CMRGBColorPtr = ^CMRGBColor;
  231.     CMRGBColor = RECORD
  232.         red:                    INTEGER;                                {  0..65535  }
  233.         green:                    INTEGER;
  234.         blue:                    INTEGER;
  235.     END;
  236.  
  237.     CMCMYKColorPtr = ^CMCMYKColor;
  238.     CMCMYKColor = RECORD
  239.         cyan:                    INTEGER;                                {  0..65535  }
  240.         magenta:                INTEGER;
  241.         yellow:                    INTEGER;
  242.         black:                    INTEGER;
  243.     END;
  244.  
  245.     CMCMYColorPtr = ^CMCMYColor;
  246.     CMCMYColor = RECORD
  247.         cyan:                    INTEGER;                                {  0..65535  }
  248.         magenta:                INTEGER;
  249.         yellow:                    INTEGER;
  250.     END;
  251.  
  252.     CMHLSColorPtr = ^CMHLSColor;
  253.     CMHLSColor = RECORD
  254.         hue:                    INTEGER;                                {  0..65535. Fraction of circle. Red at 0  }
  255.         lightness:                INTEGER;                                {  0..65535  }
  256.         saturation:                INTEGER;                                {  0..65535  }
  257.     END;
  258.  
  259.     CMHSVColorPtr = ^CMHSVColor;
  260.     CMHSVColor = RECORD
  261.         hue:                    INTEGER;                                {  0..65535. Fraction of circle. Red at 0  }
  262.         saturation:                INTEGER;                                {  0..65535  }
  263.         value:                    INTEGER;                                {  0..65535  }
  264.     END;
  265.  
  266.     CMLabColorPtr = ^CMLabColor;
  267.     CMLabColor = RECORD
  268.         L:                        INTEGER;                                {  0..65535 maps to 0..100  }
  269.         a:                        INTEGER;                                {  0..65535 maps to -128..127.996  }
  270.         b:                        INTEGER;                                {  0..65535 maps to -128..127.996  }
  271.     END;
  272.  
  273.     CMLuvColorPtr = ^CMLuvColor;
  274.     CMLuvColor = RECORD
  275.         L:                        INTEGER;                                {  0..65535 maps to 0..100  }
  276.         u:                        INTEGER;                                {  0..65535 maps to -128..127.996  }
  277.         v:                        INTEGER;                                {  0..65535 maps to -128..127.996  }
  278.     END;
  279.  
  280.     CMYxyColorPtr = ^CMYxyColor;
  281.     CMYxyColor = RECORD
  282.         capY:                    INTEGER;                                {  0..65535 maps to 0..1  }
  283.         x:                        INTEGER;                                {  0..65535 maps to 0..1  }
  284.         y:                        INTEGER;                                {  0..65535 maps to 0..1  }
  285.     END;
  286.  
  287.     CMGrayColorPtr = ^CMGrayColor;
  288.     CMGrayColor = RECORD
  289.         gray:                    INTEGER;                                {  0..65535  }
  290.     END;
  291.  
  292.     CMMultichannel5ColorPtr = ^CMMultichannel5Color;
  293.     CMMultichannel5Color = RECORD
  294.         components:                PACKED ARRAY [0..4] OF UInt8;            {  0..255  }
  295.     END;
  296.  
  297.     CMMultichannel6ColorPtr = ^CMMultichannel6Color;
  298.     CMMultichannel6Color = RECORD
  299.         components:                PACKED ARRAY [0..5] OF UInt8;            {  0..255  }
  300.     END;
  301.  
  302.     CMMultichannel7ColorPtr = ^CMMultichannel7Color;
  303.     CMMultichannel7Color = RECORD
  304.         components:                PACKED ARRAY [0..6] OF UInt8;            {  0..255  }
  305.     END;
  306.  
  307.     CMMultichannel8ColorPtr = ^CMMultichannel8Color;
  308.     CMMultichannel8Color = RECORD
  309.         components:                PACKED ARRAY [0..7] OF UInt8;            {  0..255  }
  310.     END;
  311.  
  312.     CMNamedColorPtr = ^CMNamedColor;
  313.     CMNamedColor = RECORD
  314.         namedColorIndex:        LONGINT;                                {  0..a lot  }
  315.     END;
  316.  
  317.     CMColorPtr = ^CMColor;
  318.     CMColor = RECORD
  319.         CASE INTEGER OF
  320.         0: (
  321.             rgb:                CMRGBColor;
  322.             );
  323.         1: (
  324.             hsv:                CMHSVColor;
  325.             );
  326.         2: (
  327.             hls:                CMHLSColor;
  328.             );
  329.         3: (
  330.             XYZ:                CMXYZColor;
  331.             );
  332.         4: (
  333.             Lab:                CMLabColor;
  334.             );
  335.         5: (
  336.             Luv:                CMLuvColor;
  337.             );
  338.         6: (
  339.             Yxy:                CMYxyColor;
  340.             );
  341.         7: (
  342.             cmyk:                CMCMYKColor;
  343.             );
  344.         8: (
  345.             cmy:                CMCMYColor;
  346.             );
  347.         9: (
  348.             gray:                CMGrayColor;
  349.             );
  350.         10: (
  351.             mc5:                CMMultichannel5Color;
  352.             );
  353.         11: (
  354.             mc6:                CMMultichannel6Color;
  355.             );
  356.         12: (
  357.             mc7:                CMMultichannel7Color;
  358.             );
  359.         13: (
  360.             mc8:                CMMultichannel8Color;
  361.             );
  362.         14: (
  363.             namedColor:            CMNamedColor;
  364.             );
  365.     END;
  366.  
  367.     CMProfileSearchRecordPtr = ^CMProfileSearchRecord;
  368.     CMProfileSearchRecord = RECORD
  369.         header:                    CMHeader;
  370.         fieldMask:                LONGINT;
  371.         reserved:                ARRAY [0..1] OF LONGINT;
  372.     END;
  373.  
  374.     CMProfileSearchRecordHandle            = ^CMProfileSearchRecordPtr;
  375. {  Search definition for 2.0  }
  376.     CMSearchRecordPtr = ^CMSearchRecord;
  377.     CMSearchRecord = RECORD
  378.         CMMType:                OSType;
  379.         profileClass:            OSType;
  380.         dataColorSpace:            OSType;
  381.         profileConnectionSpace:    OSType;
  382.         deviceManufacturer:        LONGINT;
  383.         deviceModel:            LONGINT;
  384.         deviceAttributes:        ARRAY [0..1] OF LONGINT;
  385.         profileFlags:            LONGINT;
  386.         searchMask:                LONGINT;
  387.         filter:                    CMProfileFilterUPP;
  388.     END;
  389.  
  390. {  GetCWInfo structures  }
  391.     CMMInfoRecordPtr = ^CMMInfoRecord;
  392.     CMMInfoRecord = RECORD
  393.         CMMType:                OSType;
  394.         CMMVersion:                LONGINT;
  395.     END;
  396.  
  397.     CMCWInfoRecordPtr = ^CMCWInfoRecord;
  398.     CMCWInfoRecord = RECORD
  399.         cmmCount:                LONGINT;
  400.         cmmInfo:                ARRAY [0..1] OF CMMInfoRecord;
  401.     END;
  402.  
  403.  
  404. CONST
  405.     cmNoColorPacking            = $0000;
  406.     cmAlphaSpace                = $0080;
  407.     cmWord5ColorPacking            = $0500;
  408.     cmLong8ColorPacking            = $0800;
  409.     cmLong10ColorPacking        = $0A00;
  410.     cmAlphaFirstPacking            = $1000;
  411.     cmOneBitDirectPacking        = $0B00;
  412.  
  413.     cmNoSpace                    = 0;
  414.     cmRGBSpace                    = 1;
  415.     cmCMYKSpace                    = 2;
  416.     cmHSVSpace                    = 3;
  417.     cmHLSSpace                    = 4;
  418.     cmYXYSpace                    = 5;
  419.     cmXYZSpace                    = 6;
  420.     cmLUVSpace                    = 7;
  421.     cmLABSpace                    = 8;
  422.     cmReservedSpace1            = 9;
  423.     cmGraySpace                    = 10;
  424.     cmReservedSpace2            = 11;
  425.     cmGamutResultSpace            = 12;
  426.     cmRGBASpace                    = 129;
  427.     cmGrayASpace                = 138;
  428.     cmRGB16Space                = $0501;
  429.     cmRGB32Space                = $0801;
  430.     cmARGB32Space                = $1881;
  431.     cmCMYK32Space                = $0802;
  432.     cmHSV32Space                = $0A03;
  433.     cmHLS32Space                = $0A04;
  434.     cmYXY32Space                = $0A05;
  435.     cmXYZ32Space                = $0A06;
  436.     cmLUV32Space                = $0A07;
  437.     cmLAB32Space                = $0A08;
  438.     cmGamutResult1Space            = $0B0C;
  439.  
  440.  
  441. TYPE
  442.     CMBitmapColorSpace                    = LONGINT;
  443.     CMBitmapPtr = ^CMBitmap;
  444.     CMBitmap = RECORD
  445.         image:                    CStringPtr;
  446.         width:                    LONGINT;
  447.         height:                    LONGINT;
  448.         rowBytes:                LONGINT;
  449.         pixelSize:                LONGINT;
  450.         space:                    CMBitmapColorSpace;
  451.         user1:                    LONGINT;
  452.         user2:                    LONGINT;
  453.     END;
  454.  
  455. {  Classic Print Manager Stuff  }
  456.  
  457. CONST
  458.     enableColorMatchingOp        = 12;
  459.     registerProfileOp            = 13;
  460.  
  461.     cmNoProfileBase                = 0;
  462.     cmFileBasedProfile            = 1;
  463.     cmHandleBasedProfile        = 2;
  464.     cmPtrBasedProfile            = 3;
  465.  
  466.  
  467. TYPE
  468.     CMFileLocationPtr = ^CMFileLocation;
  469.     CMFileLocation = RECORD
  470.         spec:                    FSSpec;
  471.     END;
  472.  
  473.     CMHandleLocationPtr = ^CMHandleLocation;
  474.     CMHandleLocation = RECORD
  475.         h:                        Handle;
  476.     END;
  477.  
  478.     CMPtrLocationPtr = ^CMPtrLocation;
  479.     CMPtrLocation = RECORD
  480.         p:                        Ptr;
  481.     END;
  482.  
  483.     CMProfLocPtr = ^CMProfLoc;
  484.     CMProfLoc = RECORD
  485.         CASE INTEGER OF
  486.         0: (
  487.             fileLoc:            CMFileLocation;
  488.             );
  489.         1: (
  490.             handleLoc:            CMHandleLocation;
  491.             );
  492.         2: (
  493.             ptrLoc:                CMPtrLocation;
  494.             );
  495.     END;
  496.  
  497.     CMProfileLocationPtr = ^CMProfileLocation;
  498.     CMProfileLocation = RECORD
  499.         locType:                INTEGER;
  500.         u:                        CMProfLoc;
  501.     END;
  502.  
  503. {  Profile file and element access  }
  504. FUNCTION CMNewProfile(VAR prof: CMProfileRef; {CONST}VAR theProfile: CMProfileLocation): CMError;
  505.     {$IFC NOT GENERATINGCFM}
  506.     INLINE $203C, $0008, $001B, $ABEE;
  507.     {$ENDC}
  508. FUNCTION CMOpenProfile(VAR prof: CMProfileRef; {CONST}VAR theProfile: CMProfileLocation): CMError;
  509.     {$IFC NOT GENERATINGCFM}
  510.     INLINE $203C, $0008, $001C, $ABEE;
  511.     {$ENDC}
  512. FUNCTION CMCloseProfile(prof: CMProfileRef): CMError;
  513.     {$IFC NOT GENERATINGCFM}
  514.     INLINE $203C, $0004, $001D, $ABEE;
  515.     {$ENDC}
  516. FUNCTION CMUpdateProfile(prof: CMProfileRef): CMError;
  517.     {$IFC NOT GENERATINGCFM}
  518.     INLINE $203C, $0004, $0034, $ABEE;
  519.     {$ENDC}
  520. FUNCTION CMCopyProfile(VAR targetProf: CMProfileRef; {CONST}VAR targetLocation: CMProfileLocation; srcProf: CMProfileRef): CMError;
  521.     {$IFC NOT GENERATINGCFM}
  522.     INLINE $203C, $000C, $0025, $ABEE;
  523.     {$ENDC}
  524. FUNCTION CMValidateProfile(prof: CMProfileRef; VAR valid: BOOLEAN; VAR preferredCMMnotfound: BOOLEAN): CMError;
  525.     {$IFC NOT GENERATINGCFM}
  526.     INLINE $203C, $000C, $0026, $ABEE;
  527.     {$ENDC}
  528. FUNCTION CMGetProfileLocation(prof: CMProfileRef; VAR theProfile: CMProfileLocation): CMError;
  529.     {$IFC NOT GENERATINGCFM}
  530.     INLINE $203C, $0008, $003C, $ABEE;
  531.     {$ENDC}
  532. FUNCTION CMFlattenProfile(prof: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: UNIV Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  533.     {$IFC NOT GENERATINGCFM}
  534.     INLINE $203C, $0014, $0031, $ABEE;
  535.     {$ENDC}
  536. FUNCTION CMUnflattenProfile(VAR resultFileSpec: FSSpec; proc: CMFlattenUPP; refCon: UNIV Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  537.     {$IFC NOT GENERATINGCFM}
  538.     INLINE $203C, $0010, $0032, $ABEE;
  539.     {$ENDC}
  540. FUNCTION CMGetProfileHeader(prof: CMProfileRef; VAR header: CMAppleProfileHeader): CMError;
  541.     {$IFC NOT GENERATINGCFM}
  542.     INLINE $203C, $0008, $0039, $ABEE;
  543.     {$ENDC}
  544. FUNCTION CMSetProfileHeader(prof: CMProfileRef; {CONST}VAR header: CMAppleProfileHeader): CMError;
  545.     {$IFC NOT GENERATINGCFM}
  546.     INLINE $203C, $0008, $003A, $ABEE;
  547.     {$ENDC}
  548. FUNCTION CMProfileElementExists(prof: CMProfileRef; tag: OSType; VAR found: BOOLEAN): CMError;
  549.     {$IFC NOT GENERATINGCFM}
  550.     INLINE $203C, $000C, $001E, $ABEE;
  551.     {$ENDC}
  552. FUNCTION CMCountProfileElements(prof: CMProfileRef; VAR elementCount: LONGINT): CMError;
  553.     {$IFC NOT GENERATINGCFM}
  554.     INLINE $203C, $0008, $001F, $ABEE;
  555.     {$ENDC}
  556. FUNCTION CMGetProfileElement(prof: CMProfileRef; tag: OSType; VAR elementSize: LONGINT; elementData: UNIV Ptr): CMError;
  557.     {$IFC NOT GENERATINGCFM}
  558.     INLINE $203C, $0010, $0020, $ABEE;
  559.     {$ENDC}
  560. FUNCTION CMSetProfileElement(prof: CMProfileRef; tag: OSType; elementSize: LONGINT; elementData: UNIV Ptr): CMError;
  561.     {$IFC NOT GENERATINGCFM}
  562.     INLINE $203C, $0010, $0023, $ABEE;
  563.     {$ENDC}
  564. FUNCTION CMSetProfileElementSize(prof: CMProfileRef; tag: OSType; elementSize: LONGINT): CMError;
  565.     {$IFC NOT GENERATINGCFM}
  566.     INLINE $203C, $000C, $0038, $ABEE;
  567.     {$ENDC}
  568. FUNCTION CMSetProfileElementReference(prof: CMProfileRef; elementTag: OSType; referenceTag: OSType): CMError;
  569.     {$IFC NOT GENERATINGCFM}
  570.     INLINE $203C, $000C, $0035, $ABEE;
  571.     {$ENDC}
  572. FUNCTION CMGetPartialProfileElement(prof: CMProfileRef; tag: OSType; offset: LONGINT; VAR byteCount: LONGINT; elementData: UNIV Ptr): CMError;
  573.     {$IFC NOT GENERATINGCFM}
  574.     INLINE $203C, $0014, $0036, $ABEE;
  575.     {$ENDC}
  576. FUNCTION CMSetPartialProfileElement(prof: CMProfileRef; tag: OSType; offset: LONGINT; byteCount: LONGINT; elementData: UNIV Ptr): CMError;
  577.     {$IFC NOT GENERATINGCFM}
  578.     INLINE $203C, $0014, $0037, $ABEE;
  579.     {$ENDC}
  580. FUNCTION CMGetIndProfileElementInfo(prof: CMProfileRef; index: LONGINT; VAR tag: OSType; VAR elementSize: LONGINT; VAR refs: BOOLEAN): CMError;
  581.     {$IFC NOT GENERATINGCFM}
  582.     INLINE $203C, $0014, $0021, $ABEE;
  583.     {$ENDC}
  584. FUNCTION CMGetIndProfileElement(prof: CMProfileRef; index: LONGINT; VAR elementSize: LONGINT; elementData: UNIV Ptr): CMError;
  585.     {$IFC NOT GENERATINGCFM}
  586.     INLINE $203C, $0010, $0022, $ABEE;
  587.     {$ENDC}
  588. FUNCTION CMRemoveProfileElement(prof: CMProfileRef; tag: OSType): CMError;
  589.     {$IFC NOT GENERATINGCFM}
  590.     INLINE $203C, $0008, $0024, $ABEE;
  591.     {$ENDC}
  592. FUNCTION CMGetScriptProfileDescription(prof: CMProfileRef; VAR name: Str255; VAR code: ScriptCode): CMError;
  593.     {$IFC NOT GENERATINGCFM}
  594.     INLINE $203C, $000C, $003E, $ABEE;
  595.     {$ENDC}
  596. {  Low-level matching functions  }
  597. FUNCTION NCWNewColorWorld(VAR cw: CMWorldRef; src: CMProfileRef; dst: CMProfileRef): CMError;
  598.     {$IFC NOT GENERATINGCFM}
  599.     INLINE $203C, $000C, $0014, $ABEE;
  600.     {$ENDC}
  601. FUNCTION CWConcatColorWorld(VAR cw: CMWorldRef; VAR profileSet: CMConcatProfileSet): CMError;
  602.     {$IFC NOT GENERATINGCFM}
  603.     INLINE $203C, $0008, $0015, $ABEE;
  604.     {$ENDC}
  605. FUNCTION CWNewLinkProfile(VAR prof: CMProfileRef; {CONST}VAR targetLocation: CMProfileLocation; VAR profileSet: CMConcatProfileSet): CMError;
  606.     {$IFC NOT GENERATINGCFM}
  607.     INLINE $203C, $000C, $0033, $ABEE;
  608.     {$ENDC}
  609. PROCEDURE CWDisposeColorWorld(cw: CMWorldRef);
  610.     {$IFC NOT GENERATINGCFM}
  611.     INLINE $203C, $0004, $0001, $ABEE;
  612.     {$ENDC}
  613. FUNCTION CWMatchColors(cw: CMWorldRef; VAR myColors: CMColor; count: LONGINT): CMError;
  614.     {$IFC NOT GENERATINGCFM}
  615.     INLINE $203C, $000C, $0002, $ABEE;
  616.     {$ENDC}
  617. FUNCTION CWCheckColors(cw: CMWorldRef; VAR myColors: CMColor; count: LONGINT; VAR result: LONGINT): CMError;
  618.     {$IFC NOT GENERATINGCFM}
  619.     INLINE $203C, $0010, $0003, $ABEE;
  620.     {$ENDC}
  621. {  Bitmap matching  }
  622. FUNCTION CWMatchBitmap(cw: CMWorldRef; VAR bitmap: CMBitmap; progressProc: CMBitmapCallBackUPP; refCon: UNIV Ptr; VAR matchedBitmap: CMBitmap): CMError;
  623.     {$IFC NOT GENERATINGCFM}
  624.     INLINE $203C, $0010, $002C, $ABEE;
  625.     {$ENDC}
  626. FUNCTION CWCheckBitmap(cw: CMWorldRef; {CONST}VAR bitmap: CMBitmap; progressProc: CMBitmapCallBackUPP; refCon: UNIV Ptr; VAR resultBitmap: CMBitmap): CMError;
  627.     {$IFC NOT GENERATINGCFM}
  628.     INLINE $203C, $0014, $002D, $ABEE;
  629.     {$ENDC}
  630. {  Quickdraw-specific matching  }
  631. FUNCTION CWMatchPixMap(cw: CMWorldRef; VAR myPixMap: PixMap; progressProc: CMBitmapCallBackUPP; refCon: UNIV Ptr): CMError;
  632.     {$IFC NOT GENERATINGCFM}
  633.     INLINE $203C, $0010, $0004, $ABEE;
  634.     {$ENDC}
  635. FUNCTION CWCheckPixMap(cw: CMWorldRef; VAR myPixMap: PixMap; progressProc: CMBitmapCallBackUPP; refCon: UNIV Ptr; VAR resultBitMap: BitMap): CMError;
  636.     {$IFC NOT GENERATINGCFM}
  637.     INLINE $203C, $0014, $0007, $ABEE;
  638.     {$ENDC}
  639. FUNCTION NCMBeginMatching(src: CMProfileRef; dst: CMProfileRef; VAR myRef: CMMatchRef): CMError;
  640.     {$IFC NOT GENERATINGCFM}
  641.     INLINE $203C, $000C, $0016, $ABEE;
  642.     {$ENDC}
  643. PROCEDURE CMEndMatching(myRef: CMMatchRef);
  644.     {$IFC NOT GENERATINGCFM}
  645.     INLINE $203C, $0004, $000B, $ABEE;
  646.     {$ENDC}
  647. PROCEDURE NCMDrawMatchedPicture(myPicture: PicHandle; dst: CMProfileRef; VAR myRect: Rect);
  648.     {$IFC NOT GENERATINGCFM}
  649.     INLINE $203C, $000C, $0017, $ABEE;
  650.     {$ENDC}
  651. PROCEDURE CMEnableMatchingComment(enableIt: BOOLEAN);
  652.     {$IFC NOT GENERATINGCFM}
  653.     INLINE $203C, $0002, $000D, $ABEE;
  654.     {$ENDC}
  655. FUNCTION NCMUseProfileComment(prof: CMProfileRef; flags: LONGINT): CMError;
  656.     {$IFC NOT GENERATINGCFM}
  657.     INLINE $203C, $0008, $003B, $ABEE;
  658.     {$ENDC}
  659. {  System Profile access  }
  660. FUNCTION CMGetSystemProfile(VAR prof: CMProfileRef): CMError;
  661.     {$IFC NOT GENERATINGCFM}
  662.     INLINE $203C, $0004, $0018, $ABEE;
  663.     {$ENDC}
  664. FUNCTION CMSetSystemProfile({CONST}VAR profileFileSpec: FSSpec): CMError;
  665.     {$IFC NOT GENERATINGCFM}
  666.     INLINE $203C, $0004, $0019, $ABEE;
  667.     {$ENDC}
  668. {  External Profile Management  }
  669. FUNCTION CMNewProfileSearch(VAR searchSpec: CMSearchRecord; refCon: UNIV Ptr; VAR count: LONGINT; VAR searchResult: CMProfileSearchRef): CMError;
  670.     {$IFC NOT GENERATINGCFM}
  671.     INLINE $203C, $0010, $0027, $ABEE;
  672.     {$ENDC}
  673. FUNCTION CMUpdateProfileSearch(search: CMProfileSearchRef; refCon: UNIV Ptr; VAR count: LONGINT): CMError;
  674.     {$IFC NOT GENERATINGCFM}
  675.     INLINE $203C, $000C, $0028, $ABEE;
  676.     {$ENDC}
  677. PROCEDURE CMDisposeProfileSearch(search: CMProfileSearchRef);
  678.     {$IFC NOT GENERATINGCFM}
  679.     INLINE $203C, $0004, $0029, $ABEE;
  680.     {$ENDC}
  681. FUNCTION CMSearchGetIndProfile(search: CMProfileSearchRef; index: LONGINT; VAR prof: CMProfileRef): CMError;
  682.     {$IFC NOT GENERATINGCFM}
  683.     INLINE $203C, $000C, $002A, $ABEE;
  684.     {$ENDC}
  685. FUNCTION CMSearchGetIndProfileFileSpec(search: CMProfileSearchRef; index: LONGINT; VAR profileFile: FSSpec): CMError;
  686.     {$IFC NOT GENERATINGCFM}
  687.     INLINE $203C, $000C, $002B, $ABEE;
  688.     {$ENDC}
  689. {  Utilities  }
  690. FUNCTION CMGetColorSyncFolderSpec(vRefNum: INTEGER; createFolder: BOOLEAN; VAR foundVRefNum: INTEGER; VAR foundDirID: LONGINT): CMError;
  691.     {$IFC NOT GENERATINGCFM}
  692.     INLINE $203C, $000C, $0011, $ABEE;
  693.     {$ENDC}
  694. FUNCTION CMGetCWInfo(cw: CMWorldRef; VAR info: CMCWInfoRecord): CMError;
  695.     {$IFC NOT GENERATINGCFM}
  696.     INLINE $203C, $0008, $001A, $ABEE;
  697.     {$ENDC}
  698. {  PS-related  }
  699. FUNCTION CMGetPS2ColorSpace(srcProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: UNIV Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  700.     {$IFC NOT GENERATINGCFM}
  701.     INLINE $203C, $0014, $002E, $ABEE;
  702.     {$ENDC}
  703. FUNCTION CMGetPS2ColorRenderingIntent(srcProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: UNIV Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  704.     {$IFC NOT GENERATINGCFM}
  705.     INLINE $203C, $0014, $002F, $ABEE;
  706.     {$ENDC}
  707. FUNCTION CMGetPS2ColorRendering(srcProf: CMProfileRef; dstProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: UNIV Ptr; VAR preferredCMMnotfound: BOOLEAN): CMError;
  708.     {$IFC NOT GENERATINGCFM}
  709.     INLINE $203C, $0018, $0030, $ABEE;
  710.     {$ENDC}
  711. FUNCTION CMGetPS2ColorRenderingVMSize(srcProf: CMProfileRef; dstProf: CMProfileRef; VAR vmSize: LONGINT; VAR preferredCMMnotfound: BOOLEAN): CMError;
  712.     {$IFC NOT GENERATINGCFM}
  713.     INLINE $203C, $0010, $003D, $ABEE;
  714.     {$ENDC}
  715. {  ColorSync 1.0 functions which have parallel 2.0 counterparts  }
  716. FUNCTION CWNewColorWorld(VAR cw: CMWorldRef; src: CMProfileHandle; dst: CMProfileHandle): CMError;
  717.     {$IFC NOT GENERATINGCFM}
  718.     INLINE $203C, $000C, $0000, $ABEE;
  719.     {$ENDC}
  720. FUNCTION ConcatenateProfiles(thru: CMProfileHandle; dst: CMProfileHandle; VAR newDst: CMProfileHandle): CMError;
  721.     {$IFC NOT GENERATINGCFM}
  722.     INLINE $203C, $000C, $000C, $ABEE;
  723.     {$ENDC}
  724. FUNCTION CMBeginMatching(src: CMProfileHandle; dst: CMProfileHandle; VAR myRef: CMMatchRef): CMError;
  725.     {$IFC NOT GENERATINGCFM}
  726.     INLINE $203C, $000C, $000A, $ABEE;
  727.     {$ENDC}
  728. PROCEDURE CMDrawMatchedPicture(myPicture: PicHandle; dst: CMProfileHandle; VAR myRect: Rect);
  729.     {$IFC NOT GENERATINGCFM}
  730.     INLINE $203C, $000C, $0009, $ABEE;
  731.     {$ENDC}
  732. FUNCTION CMUseProfileComment(profile: CMProfileHandle): CMError;
  733.     {$IFC NOT GENERATINGCFM}
  734.     INLINE $203C, $0004, $0008, $ABEE;
  735.     {$ENDC}
  736. PROCEDURE CMGetProfileName(myProfile: CMProfileHandle; VAR IStringResult: CMIString);
  737.     {$IFC NOT GENERATINGCFM}
  738.     INLINE $203C, $0008, $000E, $ABEE;
  739.     {$ENDC}
  740. FUNCTION CMGetProfileAdditionalDataOffset(myProfile: CMProfileHandle): LONGINT;
  741.     {$IFC NOT GENERATINGCFM}
  742.     INLINE $203C, $0004, $000F, $ABEE;
  743.     {$ENDC}
  744. {  ProfileResponder functions  }
  745. FUNCTION GetProfile(deviceType: OSType; refNum: LONGINT; aProfile: CMProfileHandle; VAR returnedProfile: CMProfileHandle): CMError;
  746.     {$IFC NOT GENERATINGCFM}
  747.     INLINE $203C, $0010, $0005, $ABEE;
  748.     {$ENDC}
  749. FUNCTION SetProfile(deviceType: OSType; refNum: LONGINT; newProfile: CMProfileHandle): CMError;
  750.     {$IFC NOT GENERATINGCFM}
  751.     INLINE $203C, $000C, $0006, $ABEE;
  752.     {$ENDC}
  753. FUNCTION SetProfileDescription(deviceType: OSType; refNum: LONGINT; deviceData: LONGINT; hProfile: CMProfileHandle): CMError;
  754.     {$IFC NOT GENERATINGCFM}
  755.     INLINE $203C, $0010, $0010, $ABEE;
  756.     {$ENDC}
  757. FUNCTION GetIndexedProfile(deviceType: OSType; refNum: LONGINT; search: CMProfileSearchRecordHandle; VAR returnProfile: CMProfileHandle; VAR index: LONGINT): CMError;
  758.     {$IFC NOT GENERATINGCFM}
  759.     INLINE $203C, $0014, $0012, $ABEE;
  760.     {$ENDC}
  761. FUNCTION DeleteDeviceProfile(deviceType: OSType; refNum: LONGINT; deleteMe: CMProfileHandle): CMError;
  762.     {$IFC NOT GENERATINGCFM}
  763.     INLINE $203C, $000C, $0013, $ABEE;
  764.     {$ENDC}
  765. {$IFC OLDROUTINENAMES }
  766. {  constants  }
  767.  
  768. CONST
  769.     kMatchCMMType                = $00000001;
  770.     kMatchApplProfileVersion    = $00000002;
  771.     kMatchDataType                = $00000004;
  772.     kMatchDeviceType            = $00000008;
  773.     kMatchDeviceManufacturer    = $00000010;
  774.     kMatchDeviceModel            = $00000020;
  775.     kMatchDeviceAttributes        = $00000040;
  776.     kMatchFlags                    = $00000080;
  777.     kMatchOptions                = $00000100;
  778.     kMatchWhite                    = $00000200;
  779.     kMatchBlack                    = $00000400;
  780.  
  781. {  types  }
  782.  
  783. TYPE
  784.     CMYKColor                            = CMCMYKColor;
  785.     CMYKColorPtr                         = ^CMYKColor;
  786.     CWorld                                = CMWorldRef;
  787.     CMGamutResult                        = ^LONGINT;
  788. {  functions  }
  789. PROCEDURE EndMatching(myRef: CMMatchRef);
  790.     {$IFC NOT GENERATINGCFM}
  791.     INLINE $203C, $0004, $000B, $ABEE;
  792.     {$ENDC}
  793. PROCEDURE EnableMatching(enableIt: BOOLEAN);
  794.     {$IFC NOT GENERATINGCFM}
  795.     INLINE $203C, $0002, $000D, $ABEE;
  796.     {$ENDC}
  797. FUNCTION GetColorSyncFolderSpec(vRefNum: INTEGER; createFolder: BOOLEAN; VAR foundVRefNum: INTEGER; VAR foundDirID: LONGINT): CMError;
  798.     {$IFC NOT GENERATINGCFM}
  799.     INLINE $203C, $000C, $0011, $ABEE;
  800.     {$ENDC}
  801. FUNCTION BeginMatching(src: CMProfileHandle; dst: CMProfileHandle; VAR myRef: CMMatchRef): CMError;
  802.     {$IFC NOT GENERATINGCFM}
  803.     INLINE $203C, $000C, $000A, $ABEE;
  804.     {$ENDC}
  805. PROCEDURE DrawMatchedPicture(myPicture: PicHandle; dst: CMProfileHandle; VAR myRect: Rect);
  806.     {$IFC NOT GENERATINGCFM}
  807.     INLINE $203C, $000C, $0009, $ABEE;
  808.     {$ENDC}
  809. FUNCTION UseProfile(profile: CMProfileHandle): CMError;
  810.     {$IFC NOT GENERATINGCFM}
  811.     INLINE $203C, $0004, $0008, $ABEE;
  812.     {$ENDC}
  813. PROCEDURE GetProfileName(myProfile: CMProfileHandle; VAR IStringResult: CMIString);
  814.     {$IFC NOT GENERATINGCFM}
  815.     INLINE $203C, $0008, $000E, $ABEE;
  816.     {$ENDC}
  817. FUNCTION GetProfileAdditionalDataOffset(myProfile: CMProfileHandle): LONGINT;
  818.     {$IFC NOT GENERATINGCFM}
  819.     INLINE $203C, $0004, $000F, $ABEE;
  820.     {$ENDC}
  821. {$ENDC}
  822. {$ENDC}
  823. {$IFC FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED }
  824. {  PrGeneral parameter blocks  }
  825.  
  826. TYPE
  827.     TEnableColorMatchingBlkPtr = ^TEnableColorMatchingBlk;
  828.     TEnableColorMatchingBlk = RECORD
  829.         iOpCode:                INTEGER;
  830.         iError:                    INTEGER;
  831.         lReserved:                LONGINT;
  832.         hPrint:                    THPrint;
  833.         fEnableIt:                BOOLEAN;
  834.         filler:                    SInt8;
  835.     END;
  836.  
  837.     TRegisterProfileBlkPtr = ^TRegisterProfileBlk;
  838.     TRegisterProfileBlk = RECORD
  839.         iOpCode:                INTEGER;
  840.         iError:                    INTEGER;
  841.         lReserved:                LONGINT;
  842.         hPrint:                    THPrint;
  843.         fRegisterIt:            BOOLEAN;
  844.         filler:                    SInt8;
  845.     END;
  846.  
  847. {$ENDC}
  848. {$ALIGN RESET}
  849. {$POP}
  850.  
  851. {$SETC UsingIncludes := CMApplicationIncludes}
  852.  
  853. {$ENDC} {__CMAPPLICATION__}
  854.  
  855. {$IFC NOT UsingIncludes}
  856.  END.
  857. {$ENDC}
  858.